springboot基于@Bean注解注入多个数据源

您所在的位置:网站首页 bean bean mouse springboot基于@Bean注解注入多个数据源

springboot基于@Bean注解注入多个数据源

2024-07-09 23:49:58| 来源: 网络整理| 查看: 265

这里只是简单的去实现一个项目中可能会引入多个数据源的情况,这里只是简单的去实现多个数据源的情况

我这里使用的是druid的数据源,需要引入依赖

com.github.drtrang druid-spring-boot2-starter 1.1.10

配置文件:jdbc.properties

#这里面两个数据库连接随便写的,只是为了实现多个数据源

#数据库1 dev.driverClassName=111111111 dev.url=111111111 dev.username=111111111 dev.password=111111111

#数据库2 uat.driverClassName=222222222 uat.url=222222222 uat.username=222222222 uat.password=222222222

接下来就是两个配置数据源,基于@Bean注解放入ioc容器中,需要注意的是:设置的第一个数据源的bean的name属性值必须为dataSource,否则就会报错

第一个配置数据源的代码:JdbcConfiguration01.java

package com.shenlong.demo.config; import com.alibaba.druid.pool.DruidDataSource; import com.shenlong.demo.pojo.TestDemo; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; @Configuration @PropertySource("classpath:jdbc.properties") public class JdbcConfiguration01 { @Value("${dev.driverClassName}") private String driverClassName; @Value("${dev.url}") private String url; @Value("${dev.username}") private String username; @Value("${dev.password}") private String password; @Bean(name = "dataSource")//注意这里必须有个为dataSource public DataSource getDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } @Override public String toString() { return "JdbcConfiguration01{" + "driverClassName='" + driverClassName + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }

第二个配置数据源的代码:JdbcConfiguration02.java

package com.shenlong.demo.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; @Configuration @PropertySource("classpath:jdbc.properties") public class JdbcConfiguration02 { @Value("${uat.driverClassName}") private String driverClassName; @Value("${uat.url}") private String url; @Value("${uat.username}") private String username; @Value("${uat.password}") private String password; @Bean(name = "uatDataSource")//这里的bean可以随便写了 public DataSource getDataSource(){ DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driverClassName); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); return druidDataSource; } @Override public String toString() { return "JdbcConfiguration02{" + "driverClassName='" + driverClassName + '\'' + ", url='" + url + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }

上面配置的两个数据源,需要注意的是,如果需要引入这两个数据源,需要对应的去获取IOC各自的bean name属性值,即:

JdbcConfiguration01.java里面是@Bean(name = "dataSource"),引入的时候,名称同样要用到dataSource。即:

@Autowired private DataSource dataSource;

JdbcConfiguration02.java里面是@Bean(name = "uatDataSource"),引入的时候,名称同样要用到uatDataSource。

@Autowired private DataSource uatDataSource;

可以使用测试类debug查看对应的数据源的值

测试类代码如下:

package com.shenlong.demo; import com.shenlong.demo.config.JdbcConfiguration01; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.sql.DataSource; @RunWith(SpringRunner.class) @SpringBootTest class SpringbootDemoApplicationTests { @Autowired private JdbcConfiguration01 jdbcConfiguration; @Autowired private DataSource dataSource; @Autowired private DataSource uatDataSource; @Test public void test(){ System.out.println(dataSource); System.out.println(uatDataSource); System.out.println(jdbcConfiguration); } }

,下面是各自的数据源获取的值:



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭